class Convenio < ActiveRecord::Base
  has_many  :bonificaciones
  has_many  :compromisos
  belongs_to  :ejecutivo

  validates_presence_of  :fecha_inicio, :fecha_termino, :participante_id

  CENTRO_CONSUMO = 1
  CORPORATIVO = 2

  def self.vigentes_por_ejecutivo(ejecutivo_id)
    Convenio.find_all_by_ejecutivo_id(ejecutivo_id)

  end

  def validate_on_create
    errors.add(:bonificaciones, "no puede estar vac&iacute;o") if bonificaciones.nil? or bonificaciones.size == 0
    errors.add(:compromisos, "no puede estar vac&iacute;o") if compromisos.nil? or compromisos.size == 0

  end

  def bonificaciones_attributes=(bonificaciones_attributes)
    bonificaciones_attributes.each do |attributes|
      bonificaciones.build(attributes)
    end
  end

  def agregar_compromiso(descripcion, responsable, importe=nil)
    logger.debug descripcion
    logger.debug responsable
    logger.debug importe unless importe.nil?
    compromisos << Compromiso.new(:descripcion => descripcion, :responsable => responsable, :importe => importe)

  end
  
  def consecutivo
    "%06d" % id + '/' + fecha_inicio.strftime("%Y")

  end

  def compromisos_attributes=(compromisos_attributes)
    compromisos_attributes.each do |attributes|
      compromisos.build(attributes)
    end

  end

  def vigente?(fecha)
    fecha <= fecha_termino && fecha >= fecha_inicio
  end
  
  def self.recientes(ejecutivo)
    fecha_inicio = Time.now.beginning_of_week.strftime("%Y-%m-%d")
    fecha_fin = Time.now.tomorrow.strftime("%Y-%m-%d")
    ejecutivo_id = Ejecutivo.find(ejecutivo)
    conditions = [
      "created_at BETWEEN CONVERT(datetime, :fecha_inicio) AND CONVERT(datetime, :fecha_fin) AND ejecutivo_id = :ejecutivo_id",
      {:fecha_inicio => fecha_inicio, :fecha_fin => fecha_fin, :ejecutivo_id => ejecutivo_id}
    ]
    Convenio.find(:all, :conditions => conditions)
  end
  
  def self.por_vencer(ejecutivo)
    desde = Time.now.strftime("%Y-%m-%d")
    hasta = 30.days.from_now.strftime("%Y-%m-%d")
    ejecutivo_id = Ejecutivo.find(ejecutivo)
    conditions = [
      "fecha_termino BETWEEN CONVERT(datetime, :desde) AND CONVERT(datetime, :hasta) AND ejecutivo_id = :ejecutivo_id",
      {:desde => desde, :hasta => hasta, :ejecutivo_id => ejecutivo_id}
    ]
    
    Convenio.find(:all, :conditions => conditions)
  end
end
